count = 0


# 递归函数：冒泡排序
# arr: 待排序数组
# n: 当前需处理的数组长度（默认为数组整体）
def recursive_bubble_sort(arr, n=None):
    global count
    count += 1  # 递归调用计数

    # 初始化 n
    if n is None:
        n = len(arr)

    # 基线条件：数组为空或只有一个元素时直接返回
    if n <= 1:
        return

    # 单次冒泡过程：将当前未排序部分的最大元素移动到末尾
    swapped = False
    for i in range(n - 1):
        if arr[i] > arr[i + 1]:
            arr[i], arr[i + 1] = arr[i + 1], arr[i]
            swapped = True

    # 如果本轮未发生交换，说明数组已有序，提前终止递归
    if not swapped:
        return

    # 递归处理剩余子数组（去掉最后一个已排序元素）
    recursive_bubble_sort(arr, n - 1)


# 测试
arr = [5, 2, 9, 1, 5, 6]
recursive_bubble_sort(arr)
print("排序结果:", arr)
print("递归调用次数:", count)
